package com.gitee.W_Jun;

/**
 * @author https://gitee.com/W_Jun
 * @date 2021-12-19 23:06
 * @Description
 */
public class ClassInitTest2 {
    private static int num = 1;
    static {
        num = 2;
        number = 20;
        System.out.println(num);
        //System.out.println(number);  //报错，非法的前向引用
        //变量声明在此静态代码块后面，这里可以赋值，但是不可以调用
        //在类加载的linking的准备阶段，所有的类变量以符号引用的方式存储在方法区，
        //而当静态代码块尝试获取类变量却需要直接引用，这就导致编译报错
    }

    private static int number = 10;

    public static void main(String[] args) {
        System.out.println(ClassInitTest2.num); // 2
        //System.out.println(ClassInitTest2.number); // 10
    }
}
